#ifndef CONEXIONCLIENTE_H_
#define CONEXIONCLIENTE_H_

#include "ConexionBidireccional.h"
#include "Socket.h"
#include "../ProtocoloPlano.h"
#include "Sender.h"
#include "../../Server/ColaMensajes.h"

/*
 * @class ConexionCliente
 *
 * @brief Representa una conexion con un cliente
 *
 */
class ConexionCliente
{
public:
	/**
	* Constructor dde una conexion simple, sin threads. Misma cola para enviar y recibir
	* Se utiliza para el handshake
	*/
	ConexionCliente(std::string id,std::string host,SpaceBattleInterface* game,SocketProtocoloPlano* socket,ColaMensajes* enviar,ColaMensajes* recibir,const bool* conexionActiva);

	std::string getId();
	void terminar();

	~ConexionCliente();

private:

	void init(int listenPort,int broadcastPort);
	void handshake(std::string id,std::string host,SpaceBattleInterface* game,SocketProtocoloPlano* socket,ColaMensajes* enviar,ColaMensajes* recibir,const bool* conexionActiva);


	std::string id;

	ConexionBidireccional* conexionAServer;

};

#endif /* CONEXIONCLIENTE_H_ */
